<?php
class FieldsController extends AppController {
	var $name = 'Fields';
	var $uses=array('Field');

function admin_index(){
		//get filter field
		$filterField=array(
		$this->uses[0].'.name'=>_resource('name',true)
		);		
		$this->set('filterField',$filterField);
		$this->render('admin_index','ajax');
	}

	function admin_lists(){
		//khoi tao cac session can thiet cho 1 model, session nay dung de luu lai trang thai cua 1 model nhu phan trang, sort tang giam, dieu kien search, id cha...
		//cac su dung Session cua cakephp : doc them trong book.cakephp.org
		if(!$this->Session->check($this->uses[0])){
			//khoi tao array vao bien $tmp
			$tmp=array(
				'limit'=>$this->webConfig['default_row_per_page'],
				'conditions'=>'',
				'fields'=>null,
				'order'=>$this->uses[0].'.created desc',
				'page'=>1,
				'recursive'=>1,
				'sortField'=>null,
				'sortDir'=>'asc',				
				'filterField'=>'',
				'filterText'=>'',
				'catid'=>'',
			);
			//luu vao session
			$this->Session->write($this->uses[0],$tmp);
		}

		
		//doc ra cac trang thai cua 1 model da luu trong session
		// truyen vao bien paginate, khi lay data, model se dua vao cac gia tri cua bien nay de search, sort, phan trang ...
		$this->paginate=$this->Session->read($this->uses[0]);
		
		
		//ham paginate() la ham ho tro phan trang, khi dung ham nay, se tu dong phan trang theo cac gia tri trong bien paginate o tren
		//lay data da duoc phan trang va truyen vao bien $data0
		$data0=$this->paginate($this->uses[0]);
		//t($data0);
		
		
		//set bien $data0 ra view de hien ra luoi.
		$this->set('data0',$data0);

		//render view va cho cakephp biet day la view cua ajax -> khi do, cakephp se chi render view ma khong render toan bo layout cua website.
		$this->render('admin_lists','ajax');
	}

	function admin_add($locale=null){
		$isInsert=false;
		
		if(!empty($this->data)){
			//t($this->data);
			if($this->{$this->uses[0]}->create($this->data) && $this->{$this->uses[0]}->validates()){
								
				if($this->{$this->uses[0]}->save()) {
					if($this->data[$this->uses[0]]['default']){
						$this->{$this->uses[0]}->updateAll(array('default'=>0),array($this->uses[0].'.id <>'=>$this->{$this->uses[0]}->getLastInsertID()));
					}
					
					$this->Session->write('message',_resource('insert data successful',true));
					$this->redirectAjaxTo($this->name.'/lists','listContent');
					
					$this->data=null;					
					$isInsert=true;
					
				} else {
					$this->Session->write('error',_resource('can not insert data',true));
				}
			}else{
				$this->Session->write('error',_resource('red fill is require',true));
			}
		}
		
		
		$this->set('isInsert',$isInsert);
	}
	function admin_changeDefault($id=null){
		$id=intval($id);
		if($id){
			$this->{$this->uses[0]}->updateAll(array('default'=>0),array($this->uses[0].'.id <>'=>$id));
			$this->{$this->uses[0]}->updateAll(array('default'=>1),array($this->uses[0].'.id ='=>$id));
		}
		
		$this->admin_lists();
		

	}
	function admin_edit($id=null,$locale=null){
		
		
		$name_error=_resource('can not be null',true);
		$isInsert=false;
		$id=intval($id);
		
		if(!empty($this->data)){
					//	t($this->data,0);
			if($this->{$this->uses[0]}->validates($this->data)){			
				//t($this->data);
				if($this->{$this->uses[0]}->save($this->data)) {
					
					//update default status
					
					if($this->data[$this->uses[0]]['default']){
						$this->{$this->uses[0]}->updateAll(array('default'=>0),array($this->uses[0].'.id <>'=>$this->data[$this->uses[0]]['id']));
					}
					
					$this->Session->write('message',_resource('update data successful',true));
					$this->redirectAjaxTo($this->name.'/lists','listContent');	
					$this->data=null;					
					$isInsert=true;
					
					

				} else {
					$this->Session->write('error',_resource('can not update data',true));
				}
			}else{
				$this->Session->write('error',_resource('red fill is require',true));
			}
		}else{
			if($id!=null){
			
				$this->data =$this->{$this->uses[0]}->read(null,$id);
				$this->data[$this->uses[0]]['oldimage']=$this->data[$this->uses[0]]['image'];
				
				if(empty($this->data)){	
					$this->Session->write('error',_resource('data not found',true));				
					$this->render('admin_editNotFound');
				}
								
			}
			else{
				$this->Session->write('error',_resource('data not found',true));
				$this->render('admin_edit_not_found');
			}
		}

			

		
		$this->set('isInsert',$isInsert);
		$this->set('name_error',$name_error);
	}

	function admin_delete($id = null) {		
		$this->Session->delete('error');
		//if is submit:		
		if($this->request->is('post')){
			$id_arr=array_keys($_POST['check']);
		} else {
			$id_arr=null;
		}
		//if url
		if(intval($id)){
			$id_arr[]=$id;
		}
		if(count($id_arr)>0){
			//Xoa nhieu record
			$this->{$this->uses[0]}->deleteAll(array($this->uses[0].'.id'=>$id_arr),false);			
		} else {
			$this->Session->write('error',_resource('no information to delete',true));
		}
		$this->admin_lists();		
	}
	

	function admin_sort($sortField=null,$sortDir='asc'){
		if($sortField){
			if($sortDir!='desc') $sortDir='asc';
			$this->Session->write($this->uses[0].'.sortField',$sortField);
			$this->Session->write($this->uses[0].'.sortDir',$sortDir);
			$this->Session->write($this->uses[0].'.order',$sortField.' '.$sortDir);
		}
		$this->admin_lists();
	}

	function admin_page($page=1){
		$this->Session->write($this->uses[0].'.page',$page);
		$this->admin_lists();
	}

	function admin_display($limit=0){
		if(intval($limit)){
			$this->Session->write($this->uses[0].'.limit',$limit);
		}
		$this->admin_lists();
	}
	
	function admin_save(){
		if($this->request->is('post')){
			foreach($_POST['order'] as $k=>$v){
				if(intval($v)){
					//set view order for category
					$this->{$this->uses[0]}->updateAll(array($this->uses[0].'.view_order'=>intval($v)),array($this->uses[0].'.id'=>$k));
				}
			}
		}
		$this->Session->write('message',_resource('view order has been update',true));
		$this->admin_lists();
	}

	function admin_filter(){
		if($this->request->is('post')){
			$this->Session->write($this->uses[0].'.filterText',$this->request->data['filter_text']);
			$this->Session->write($this->uses[0].'.filterField',$this->request->data['filter_field']);
			//$conditions=$this->Session->read($this->uses[0].'.conditions');
			if(!empty($this->request->data['filter_text'])){				
				$conditions[$this->request->data['filter_field'].' like']='%'.$this->request->data['filter_text'].'%';
				$this->Session->write($this->uses[0].'.page',1);				
			}
			else{
				unset($conditions[$this->request->data['filter_field'].' like']);
			}
			
			$this->Session->write($this->uses[0].'.conditions',$conditions);
		}
		
		//t($this->Session->read('Home.status_id'));
		$this->admin_lists();
	}

	

}
?>
